'''
    用户模块完成以后,接下来我们来实现单词记录模块.单词记录模块中的功能逻辑与用户模块中的功能逻辑大致相同.因为用户记录的单词数据是保存在以用户命名的txt文件,所以我们需要
定义表示用户名的属性.创建recite.py文件,定义ReciteLogic类,代码如下:
'''
import os
class ReciteLogic:
    def __init__(self):
        self.user_name = ''
     # 接着定义展示单词记录模块功能的方法,具体代码如下:
    def welcom(self,name):
        self.user_name = name
        print('=' * 20)
        print(name + '的生词记录本')
        print('1.查看单词')
        print('2.背单词')
        print('3.添加新单词')
        print('4.删除单词')
        print('5.清空单词')
        print('6.退出')
        while True:
            option = input('请输入功能选项(生词本):\n')
            if option == '1':
                self.see_words()
            elif option == '2':
                self.recite_words()
            elif option == '3':
                self.add_words()
            elif option == '4':
                self.del_words()
            elif option == '5':
                self.clear_words()
            elif option == '6':
                break
    '''
    单词记录模块中的查看单词功能与用户模块中的用户登录功能逻辑大致相同,首先判断读取的文件是否存在,如果不存在则提示"当前无数据,请先添加单词"
如果存在则读取文件中的单词数据并进行展示,需要注意的是,在读取文件数据前,同样需要将文件中的数据转换为Python可识别的字典类型.
    '''
    def see_words(self):
        print('测试')
    def add_words(self):
        word = input('请输入要添加的单词:\n')
        mean = input('请输入单词的中文含义:\n')
        word_dict = dict()
        word_dict[word] = mean
        with open(self.user_name + '.txt',mode='a+',encoding='utf-8') as f:
            f.write(str(word_dict)+'\n')

    def data_convert(self):
        with open(self.user_name + '.txt',mode='r+',encoding='utf-8') as f:
            word_data = f.readlines()  # [{'hello':'你好'},{'welcome':'欢迎'}]
            word_dict_list = []
            for i in word_data: # i = {'hello':'你好'}
                word_dict = dict()
                step_1 = i.replace('{','').replace('}','') # step_1 = 'hello':'你好'
                step_2 = step_1.replace("'",'').split(':') # step_2 =  [hello,你好] (字符串分割后是一个列表)
                word_dict[step_2[0]] = step_2[1]
                word_dict_list.append(word_dict)
        return word_dict_list

    def del_words(self):
        if os.path.exists(self.user_name + '.txt') is not True:
            print('当前生词本无数据')
        else:
            word = input('请输入需要删除的单词:\n')
            word_list = []
            word_list_dict = []
            for i in self.data_convert():
                word_list_dict.append(i)
                for j in i:
                    word_list.append(j)
            if word in word_list:
                word_index = word_list.index(word)
                word_list_dict.pop(word_index)
                with open(self.user_name + '.txt',mode='w+',encoding='utf-8') as f:
                    for i in word_list_dict:
                        f.write(str(i) + '\n')
                print('删除成功')
            else:
                print('单词本中无此单词')

    def clear_words(self):
        tips = input('删除后数据不可恢复,是否继续(y/n):\n')
        if tips == 'y':
            with open(self.user_name + '.txt',mode='w',encoding='utf-8') as f:
                f.write('')
        if tips == 'n':
            return

    '''
    背单词的功能是随机显示英文单词,有用户输入该单词的汉语意思,如果用户输入的汉语翻译正确提示"太棒了",否则提示"再想想".背单词主要的逻辑是随机选取单词,并获取该单词的
汉语翻译,对比用户输入的汉语翻译是否相同.具体代码如下:
    '''
    def recite_words(self):
        if os.path.exists(self.user_name + '.txt') is not True:
            print('当前无数据,请先添加单词')
        else:
            words_data = self.data_convert()
            if len(words_data) == 0:
                print('生词本内容为空')
            else:
                words_li = self.data_convert()
                # 所有英文单词
                en_li = []
                for i in words_li:
                    for j in i:
                        en_li.append(j)
                # 随机产生的英语单词
                for random_word in set(en_li):
                    # 获取该单词在en_li中的索引
                    random_word_index = en_li.index(random_word)
                    # 获取该单词对应的中文
                    words_zh = words_li[random_word_index][random_word]
                    in_words = input('请输入' + random_word + '翻译' + '\n')
                    # 判断翻译是否正确
                    if in_words == words_zh:
                        print('太棒了')
                    else:
                        print('再想想')




        

